package day06;

import java.util.Arrays;

//1. 小明买狗
//某市场有10只狗, 名字分别叫"狗1", "狗2", "狗3", ..., "狗10"
//小明从该市场随机买3只, 输出小明买到的3只狗的名字
public class Demo01 {
	public static void main(String[] args) {

		// 表示市场的容器
		// 能存储10只狗的数组
		String[] dogs = new String[20];
		for (int i = 0; i < dogs.length; i++) {
			dogs[i] = "狗" + (i + 1);
		}
		System.out.println("市场里的狗: " + Arrays.toString(dogs));

		// 表示小明手上存放狗的容器
		// 能存储3只狗的数组
		String[] xiaoMin = new String[6];

		// 小明从市场买狗
		// 从市场的容器中, 取3个元素存入到小明的容器里
		// 元素从市场容器移动到小明容器之后
		// 市场容器相应位置就为null了

		// 实现方案1
		// 生成随机值(在市场数组的索引范围之内)
		// 判断该位置元素是否为null
		// 如果不为null, 取对应位置元素存入到小明的数组里
		// 如果为null, 应当重新生成随机值
		// 该操作执行3次
		for (int i = 0; i < xiaoMin.length; i++) {
			int ran;
			do {
				ran = (int) (Math.random() * dogs.length);
			} while (dogs[ran] == null);
			xiaoMin[i] = dogs[ran];
			dogs[ran] = null;
		}

		// 实现方案2
		// 生成三个不相等的随机值(在市场数组的索引范围之内)
		// 如果随机值出现相等的值, 则重新生成三个随机值
		// 按照随机值去市场数组中取元素
		//		int ran1, ran2, ran3;
		//		do {
		//			ran1 = (int) (Math.random() * dogs.length);
		//			ran2 = (int) (Math.random() * dogs.length);
		//			ran3 = (int) (Math.random() * dogs.length);
		//		} while (ran1 == ran2 || ran1 == ran3 || ran2 == ran3);
		//		xiaoMin[0] = dogs[ran1];
		//		xiaoMin[1] = dogs[ran2];
		//		xiaoMin[2] = dogs[ran3];
		//		dogs[ran1] = null;
		//		dogs[ran2] = null;
		//		dogs[ran3] = null;

		System.out.println(Arrays.toString(xiaoMin));
		System.out.println("市场里的狗: " + Arrays.toString(dogs));
	}
}
